//
//  SHToastView.h
//  SHFoundation
//
//  Created by Guanglu on 19/3/2019.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/**
 Toast位置

 - SHToastPositionBottom: 屏幕底部 1/4
 - SHToastPositionCenter: 屏幕中间
 - SHToastPositionTop: 屏幕上面1/4
 */
typedef NS_ENUM(NSInteger, SHToastPosition) {
    SHToastPositionBottom = 0,
    SHToastPositionCenter = 1,
    SHToastPositionTop    = 2,
};

/// 展示时间2s
FOUNDATION_EXTERN const NSTimeInterval kSHToastDefaultDuration; // 小于2秒算2秒

/**
 Toast提示(自动消失)
 */
@interface SHToastView : UIView

/**
 消失时回调事件
 */
@property (nonatomic, copy, nullable) void (^dismissHandler)(void);

/**
 展示位置, 默认屏幕中间
 */
@property (nonatomic, assign) SHToastPosition position;

/**
 展示Toast

 @param text 要展示的内容
 @param position 位置
 @param duration 时间
 @param handler 结束后事件
 @return SHToastView instance
 */
+ (instancetype)toastWithText:(NSString*)text
                     position:(SHToastPosition)position
                     duration:(NSTimeInterval)duration
               dismissHandler:(nullable void (^)(void))handler;
+ (instancetype)toastWithText:(NSString*)text dismissHandler:(nullable void (^)(void))handler;
+ (instancetype)toastWithText:(NSString*)text;

/*
Toast

@param text 要展示的内容
@param position 位置
@param duration 时间
@param handler 结束后事件
@return SHToastView instance
*/
- (instancetype)initWithText:(NSString*)text
                    position:(SHToastPosition)position
                    duration:(NSTimeInterval)duration
              dismissHandler:(nullable void (^)(void))handler;
- (instancetype)initWithText:(NSString*)text dismissHandler:(void (^)(void))handler;
- (instancetype)initWithText:(NSString*)text;


/**
 直接展示, 为了兼容四维代码

 @param text 要展示的内容
 @return 如果展示内容为空，则返回nil
 */
+ (nullable instancetype)showWithText:(NSString*)text;

/**
 在Application.window展示，全局的, 即Controller被dealloc后，也可以显示
 */
- (void)show;

/**
 在Controller中展示

 @param viewController 展示在哪个Controller里
 @note viewController要是全屏的, 如果是alert或其它的，显示会有问题
 */
- (void)showInController:(UIViewController*)viewController;
@end

NS_ASSUME_NONNULL_END
